blob: e968ed4aa09705d98530add23135e76141ec75c2 [file] [log] [blame]
Junio C Hamanof7c042d2008-06-06 22:50:531git(1)
Junio C Hamano1a4e8412005-12-27 08:17:232======
3
4NAME
5----
6git - the stupid content tracker
7
8
9SYNOPSIS
10--------
Junio C Hamano6b2cee12006-08-26 08:43:3111[verse]
Junio C Hamanod2179ef2010-10-22 04:12:1712'git' [--version] [--exec-path[=<path>]] [--html-path]
Junio C Hamano3d23a0a2009-10-19 08:04:3013 [-p|--paginate|--no-pager] [--no-replace-objects]
Junio C Hamanod2179ef2010-10-22 04:12:1714 [--bare] [--git-dir=<path>] [--work-tree=<path>]
15 [-c <name>=<value>]
16 [--help] <command> [<args>]
Junio C Hamano1a4e8412005-12-27 08:17:2317
18DESCRIPTION
19-----------
Junio C Hamanoe27fb932006-04-03 05:34:1020Git is a fast, scalable, distributed revision control system with an
21unusually rich command set that provides both high-level operations
22and full access to internals.
23
Junio C Hamanofce7c7e2008-07-02 03:06:3824See linkgit:gittutorial[7] to get started, then see
Junio C Hamanoe27fb932006-04-03 05:34:1025link:everyday.html[Everyday Git] for a useful minimum set of commands, and
26"man git-commandname" for documentation of each command. CVS users may
Junio C Hamanofce7c7e2008-07-02 03:06:3827also want to read linkgit:gitcvs-migration[7]. See
28the link:user-manual.html[Git User's Manual] for a more in-depth
Junio C Hamano3d30fd52007-05-08 00:32:5329introduction.
Junio C Hamano1a4e8412005-12-27 08:17:2330
Junio C Hamanod2179ef2010-10-22 04:12:1731The '<command>' is either a name of a Git command (see below) or an alias
Junio C Hamano35738e82008-01-07 07:55:4632as defined in the configuration file (see linkgit:git-config[1]).
Junio C Hamano33db4372006-06-07 19:51:4533
Junio C Hamanob63afff2007-05-01 03:05:5534Formatted and hyperlinked version of the latest git
35documentation can be viewed at
36`http://www.kernel.org/pub/software/scm/git/docs/`.
37
Junio C Hamano9d52e572007-02-13 23:48:2038ifdef::stalenotes[]
39[NOTE]
40============
Junio C Hamano9d52e572007-02-13 23:48:2041
Junio C Hamanoa9b8d242007-05-19 04:51:5542You are reading the documentation for the latest (possibly
43unreleased) version of git, that is available from 'master'
44branch of the `git.git` repository.
45Documentation for older releases are available here:
Junio C Hamano2fc92602007-03-29 01:09:4646
Junio C Hamano103b5722011-01-31 05:03:4547* link:v1.7.4/git.html[documentation for release 1.7.4]
48
49* release notes for
50 link:RelNotes/1.7.4.txt[1.7.4].
51
Junio C Hamanoe0552e42011-01-06 00:34:4752* link:v1.7.3.5/git.html[documentation for release 1.7.3.5]
Junio C Hamanoac752fa2010-09-19 00:01:0053
54* release notes for
Junio C Hamanoe0552e42011-01-06 00:34:4755 link:RelNotes/1.7.3.5.txt[1.7.3.5],
Junio C Hamano7eeb87e2010-12-16 05:58:5956 link:RelNotes/1.7.3.4.txt[1.7.3.4],
Junio C Hamano1aa55142010-12-10 02:04:4457 link:RelNotes/1.7.3.3.txt[1.7.3.3],
Junio C Hamanod2179ef2010-10-22 04:12:1758 link:RelNotes/1.7.3.2.txt[1.7.3.2],
Junio C Hamano3b4609d2010-09-30 00:04:3459 link:RelNotes/1.7.3.1.txt[1.7.3.1],
Junio C Hamanoac752fa2010-09-19 00:01:0060 link:RelNotes/1.7.3.txt[1.7.3].
61
Junio C Hamano0d75e872010-12-17 06:57:2662* link:v1.7.2.5/git.html[documentation for release 1.7.2.5]
Junio C Hamano08acb732010-07-21 21:58:3363
64* release notes for
Junio C Hamano0d75e872010-12-17 06:57:2665 link:RelNotes/1.7.2.5.txt[1.7.2.5],
Junio C Hamano1aa55142010-12-10 02:04:4466 link:RelNotes/1.7.2.4.txt[1.7.2.4],
Junio C Hamano05d16ca2010-09-10 21:57:1767 link:RelNotes/1.7.2.3.txt[1.7.2.3],
68 link:RelNotes/1.7.2.2.txt[1.7.2.2],
69 link:RelNotes/1.7.2.1.txt[1.7.2.1],
70 link:RelNotes/1.7.2.txt[1.7.2].
Junio C Hamano08acb732010-07-21 21:58:3371
Junio C Hamano0d75e872010-12-17 06:57:2672* link:v1.7.1.4/git.html[documentation for release 1.7.1.4]
Junio C Hamanofc5d7352010-04-24 02:59:1173
74* release notes for
Junio C Hamano0d75e872010-12-17 06:57:2675 link:RelNotes/1.7.1.4.txt[1.7.1.4],
Junio C Hamano1aa55142010-12-10 02:04:4476 link:RelNotes/1.7.1.3.txt[1.7.1.3],
Junio C Hamano05d16ca2010-09-10 21:57:1777 link:RelNotes/1.7.1.2.txt[1.7.1.2],
78 link:RelNotes/1.7.1.1.txt[1.7.1.1],
79 link:RelNotes/1.7.1.txt[1.7.1].
Junio C Hamanofc5d7352010-04-24 02:59:1180
Junio C Hamano0d75e872010-12-17 06:57:2681* link:v1.7.0.9/git.html[documentation for release 1.7.0.9]
Junio C Hamanodca34822010-02-13 01:02:5282
83* release notes for
Junio C Hamano0d75e872010-12-17 06:57:2684 link:RelNotes/1.7.0.9.txt[1.7.0.9],
Junio C Hamano1aa55142010-12-10 02:04:4485 link:RelNotes/1.7.0.8.txt[1.7.0.8],
Junio C Hamano05d16ca2010-09-10 21:57:1786 link:RelNotes/1.7.0.7.txt[1.7.0.7],
87 link:RelNotes/1.7.0.6.txt[1.7.0.6],
88 link:RelNotes/1.7.0.5.txt[1.7.0.5],
89 link:RelNotes/1.7.0.4.txt[1.7.0.4],
90 link:RelNotes/1.7.0.3.txt[1.7.0.3],
91 link:RelNotes/1.7.0.2.txt[1.7.0.2],
92 link:RelNotes/1.7.0.1.txt[1.7.0.1],
93 link:RelNotes/1.7.0.txt[1.7.0].
Junio C Hamanodca34822010-02-13 01:02:5294
Junio C Hamano0d75e872010-12-17 06:57:2695* link:v1.6.6.3/git.html[documentation for release 1.6.6.3]
Junio C Hamanof3a01ab2009-12-24 00:30:3496
97* release notes for
Junio C Hamano0d75e872010-12-17 06:57:2698 link:RelNotes/1.6.6.3.txt[1.6.6.3],
Junio C Hamano05d16ca2010-09-10 21:57:1799 link:RelNotes/1.6.6.2.txt[1.6.6.2],
100 link:RelNotes/1.6.6.1.txt[1.6.6.1],
101 link:RelNotes/1.6.6.txt[1.6.6].
Junio C Hamanof3a01ab2009-12-24 00:30:34102
Junio C Hamano0d75e872010-12-17 06:57:26103* link:v1.6.5.9/git.html[documentation for release 1.6.5.9]
Junio C Hamano77e01e32009-10-11 01:57:34104
105* release notes for
Junio C Hamano0d75e872010-12-17 06:57:26106 link:RelNotes/1.6.5.9.txt[1.6.5.9],
Junio C Hamano05d16ca2010-09-10 21:57:17107 link:RelNotes/1.6.5.8.txt[1.6.5.8],
108 link:RelNotes/1.6.5.7.txt[1.6.5.7],
109 link:RelNotes/1.6.5.6.txt[1.6.5.6],
110 link:RelNotes/1.6.5.5.txt[1.6.5.5],
111 link:RelNotes/1.6.5.4.txt[1.6.5.4],
112 link:RelNotes/1.6.5.3.txt[1.6.5.3],
113 link:RelNotes/1.6.5.2.txt[1.6.5.2],
114 link:RelNotes/1.6.5.1.txt[1.6.5.1],
115 link:RelNotes/1.6.5.txt[1.6.5].
Junio C Hamano77e01e32009-10-11 01:57:34116
Junio C Hamano0d75e872010-12-17 06:57:26117* link:v1.6.4.5/git.html[documentation for release 1.6.4.5]
Junio C Hamano3bd4ce32009-06-04 07:18:09118
119* release notes for
Junio C Hamano0d75e872010-12-17 06:57:26120 link:RelNotes/1.6.4.5.txt[1.6.4.5],
Junio C Hamano05d16ca2010-09-10 21:57:17121 link:RelNotes/1.6.4.4.txt[1.6.4.4],
122 link:RelNotes/1.6.4.3.txt[1.6.4.3],
123 link:RelNotes/1.6.4.2.txt[1.6.4.2],
124 link:RelNotes/1.6.4.1.txt[1.6.4.1],
125 link:RelNotes/1.6.4.txt[1.6.4].
Junio C Hamano543f8d62009-07-29 08:35:21126
127* link:v1.6.3.4/git.html[documentation for release 1.6.3.4]
128
129* release notes for
Junio C Hamano05d16ca2010-09-10 21:57:17130 link:RelNotes/1.6.3.4.txt[1.6.3.4],
131 link:RelNotes/1.6.3.3.txt[1.6.3.3],
132 link:RelNotes/1.6.3.2.txt[1.6.3.2],
133 link:RelNotes/1.6.3.1.txt[1.6.3.1],
134 link:RelNotes/1.6.3.txt[1.6.3].
Junio C Hamanoa9eca4e2009-03-04 08:29:59135
136* release notes for
Junio C Hamano05d16ca2010-09-10 21:57:17137 link:RelNotes/1.6.2.5.txt[1.6.2.5],
138 link:RelNotes/1.6.2.4.txt[1.6.2.4],
139 link:RelNotes/1.6.2.3.txt[1.6.2.3],
140 link:RelNotes/1.6.2.2.txt[1.6.2.2],
141 link:RelNotes/1.6.2.1.txt[1.6.2.1],
142 link:RelNotes/1.6.2.txt[1.6.2].
Junio C Hamanoa9eca4e2009-03-04 08:29:59143
Junio C Hamanoe5bf6c12009-02-07 21:43:10144* link:v1.6.1.3/git.html[documentation for release 1.6.1.3]
Junio C Hamano13016de2008-12-25 05:46:57145
146* release notes for
Junio C Hamano05d16ca2010-09-10 21:57:17147 link:RelNotes/1.6.1.3.txt[1.6.1.3],
148 link:RelNotes/1.6.1.2.txt[1.6.1.2],
149 link:RelNotes/1.6.1.1.txt[1.6.1.1],
150 link:RelNotes/1.6.1.txt[1.6.1].
Junio C Hamano13016de2008-12-25 05:46:57151
Junio C Hamano54bf1e22008-12-20 06:30:11152* link:v1.6.0.6/git.html[documentation for release 1.6.0.6]
Junio C Hamanoc6e59502008-08-17 21:05:51153
154* release notes for
Junio C Hamano05d16ca2010-09-10 21:57:17155 link:RelNotes/1.6.0.6.txt[1.6.0.6],
156 link:RelNotes/1.6.0.5.txt[1.6.0.5],
157 link:RelNotes/1.6.0.4.txt[1.6.0.4],
158 link:RelNotes/1.6.0.3.txt[1.6.0.3],
159 link:RelNotes/1.6.0.2.txt[1.6.0.2],
160 link:RelNotes/1.6.0.1.txt[1.6.0.1],
161 link:RelNotes/1.6.0.txt[1.6.0].
Junio C Hamanoc6e59502008-08-17 21:05:51162
Junio C Hamano54bf1e22008-12-20 06:30:11163* link:v1.5.6.6/git.html[documentation for release 1.5.6.6]
Junio C Hamano11fe55c2008-06-18 23:14:56164
165* release notes for
Junio C Hamano05d16ca2010-09-10 21:57:17166 link:RelNotes/1.5.6.6.txt[1.5.6.6],
167 link:RelNotes/1.5.6.5.txt[1.5.6.5],
168 link:RelNotes/1.5.6.4.txt[1.5.6.4],
169 link:RelNotes/1.5.6.3.txt[1.5.6.3],
170 link:RelNotes/1.5.6.2.txt[1.5.6.2],
171 link:RelNotes/1.5.6.1.txt[1.5.6.1],
172 link:RelNotes/1.5.6.txt[1.5.6].
Junio C Hamano11fe55c2008-06-18 23:14:56173
Junio C Hamano54bf1e22008-12-20 06:30:11174* link:v1.5.5.6/git.html[documentation for release 1.5.5.6]
Junio C Hamano0d0679d2008-04-08 06:15:46175
176* release notes for
Junio C Hamano05d16ca2010-09-10 21:57:17177 link:RelNotes/1.5.5.6.txt[1.5.5.6],
178 link:RelNotes/1.5.5.5.txt[1.5.5.5],
179 link:RelNotes/1.5.5.4.txt[1.5.5.4],
180 link:RelNotes/1.5.5.3.txt[1.5.5.3],
181 link:RelNotes/1.5.5.2.txt[1.5.5.2],
182 link:RelNotes/1.5.5.1.txt[1.5.5.1],
183 link:RelNotes/1.5.5.txt[1.5.5].
Junio C Hamano0d0679d2008-04-08 06:15:46184
Junio C Hamano54bf1e22008-12-20 06:30:11185* link:v1.5.4.7/git.html[documentation for release 1.5.4.7]
Junio C Hamano7b9b4262008-02-02 06:48:39186
187* release notes for
Junio C Hamano05d16ca2010-09-10 21:57:17188 link:RelNotes/1.5.4.7.txt[1.5.4.7],
189 link:RelNotes/1.5.4.6.txt[1.5.4.6],
190 link:RelNotes/1.5.4.5.txt[1.5.4.5],
191 link:RelNotes/1.5.4.4.txt[1.5.4.4],
192 link:RelNotes/1.5.4.3.txt[1.5.4.3],
193 link:RelNotes/1.5.4.2.txt[1.5.4.2],
194 link:RelNotes/1.5.4.1.txt[1.5.4.1],
195 link:RelNotes/1.5.4.txt[1.5.4].
Junio C Hamano7b9b4262008-02-02 06:48:39196
Junio C Hamano4e272312008-01-08 09:13:21197* link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
Junio C Hamanoa75069c2007-09-04 01:19:24198
199* release notes for
Junio C Hamano05d16ca2010-09-10 21:57:17200 link:RelNotes/1.5.3.8.txt[1.5.3.8],
201 link:RelNotes/1.5.3.7.txt[1.5.3.7],
202 link:RelNotes/1.5.3.6.txt[1.5.3.6],
203 link:RelNotes/1.5.3.5.txt[1.5.3.5],
204 link:RelNotes/1.5.3.4.txt[1.5.3.4],
205 link:RelNotes/1.5.3.3.txt[1.5.3.3],
206 link:RelNotes/1.5.3.2.txt[1.5.3.2],
207 link:RelNotes/1.5.3.1.txt[1.5.3.1],
208 link:RelNotes/1.5.3.txt[1.5.3].
Junio C Hamano75485c82007-05-19 04:20:33209
Junio C Hamano9eb57532008-06-26 06:33:46210* link:v1.5.2.5/git.html[documentation for release 1.5.2.5]
211
Junio C Hamanoed7f4f62007-05-20 09:09:09212* release notes for
Junio C Hamano05d16ca2010-09-10 21:57:17213 link:RelNotes/1.5.2.5.txt[1.5.2.5],
214 link:RelNotes/1.5.2.4.txt[1.5.2.4],
215 link:RelNotes/1.5.2.3.txt[1.5.2.3],
216 link:RelNotes/1.5.2.2.txt[1.5.2.2],
217 link:RelNotes/1.5.2.1.txt[1.5.2.1],
218 link:RelNotes/1.5.2.txt[1.5.2].
Junio C Hamanoed7f4f62007-05-20 09:09:09219
220* link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
221
222* release notes for
Junio C Hamano05d16ca2010-09-10 21:57:17223 link:RelNotes/1.5.1.6.txt[1.5.1.6],
224 link:RelNotes/1.5.1.5.txt[1.5.1.5],
225 link:RelNotes/1.5.1.4.txt[1.5.1.4],
226 link:RelNotes/1.5.1.3.txt[1.5.1.3],
227 link:RelNotes/1.5.1.2.txt[1.5.1.2],
228 link:RelNotes/1.5.1.1.txt[1.5.1.1],
229 link:RelNotes/1.5.1.txt[1.5.1].
Junio C Hamano91d44c52007-05-09 07:16:07230
Junio C Hamanoa9b8d242007-05-19 04:51:55231* link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
Junio C Hamano91d44c52007-05-09 07:16:07232
Junio C Hamanoed7f4f62007-05-20 09:09:09233* release notes for
Junio C Hamano05d16ca2010-09-10 21:57:17234 link:RelNotes/1.5.0.7.txt[1.5.0.7],
235 link:RelNotes/1.5.0.6.txt[1.5.0.6],
236 link:RelNotes/1.5.0.5.txt[1.5.0.5],
237 link:RelNotes/1.5.0.3.txt[1.5.0.3],
238 link:RelNotes/1.5.0.2.txt[1.5.0.2],
239 link:RelNotes/1.5.0.1.txt[1.5.0.1],
240 link:RelNotes/1.5.0.txt[1.5.0].
Junio C Hamanoe90436a2007-04-22 07:22:13241
Junio C Hamanoa9b8d242007-05-19 04:51:55242* documentation for release link:v1.4.4.4/git.html[1.4.4.4],
243 link:v1.3.3/git.html[1.3.3],
244 link:v1.2.6/git.html[1.2.6],
245 link:v1.0.13/git.html[1.0.13].
Junio C Hamano9d52e572007-02-13 23:48:20246
247============
248
249endif::stalenotes[]
250
Junio C Hamano1a4e8412005-12-27 08:17:23251OPTIONS
252-------
253--version::
Junio C Hamano01078922006-03-10 00:31:47254Prints the git suite version that the 'git' program came from.
Junio C Hamano1a4e8412005-12-27 08:17:23255
256--help::
Junio C Hamano01078922006-03-10 00:31:47257Prints the synopsis and a list of the most commonly used
Junio C Hamano58256872007-12-04 08:31:13258commands. If the option '--all' or '-a' is given then all
259available commands are printed. If a git command is named this
260option will bring up the manual page for that command.
Junio C Hamano0c0da5f2007-12-13 02:45:30261+
262Other options are available to control how the manual page is
Junio C Hamano35738e82008-01-07 07:55:46263displayed. See linkgit:git-help[1] for more information,
Junio C Hamanoba4b9282008-07-06 05:20:31264because `git --help ...` is converted internally into `git
265help ...`.
Junio C Hamano1a4e8412005-12-27 08:17:23266
Junio C Hamanocc7636a2010-05-21 14:57:53267-c <name>=<value>::
268Pass a configuration parameter to the command. The value
269given will override values from configuration files.
270The <name> is expected in the same format as listed by
271'git config' (subkeys separated by dots).
272
Junio C Hamanod2179ef2010-10-22 04:12:17273--exec-path[=<path>]::
Junio C Hamano01078922006-03-10 00:31:47274Path to wherever your core git programs are installed.
Junio C Hamano1a4e8412005-12-27 08:17:23275This can also be controlled by setting the GIT_EXEC_PATH
Junio C Hamanoba4b9282008-07-06 05:20:31276environment variable. If no path is given, 'git' will print
Junio C Hamano1a4e8412005-12-27 08:17:23277the current setting and then exit.
278
Junio C Hamanob4a9ede2009-04-08 07:36:32279--html-path::
280Print the path to wherever your git HTML documentation is installed
281and exit.
282
Junio C Hamanoeb415992008-06-08 22:49:47283-p::
284--paginate::
Junio C Hamano4aa0bcc2010-03-03 05:13:12285Pipe all output into 'less' (or if set, $PAGER) if standard
286output is a terminal. This overrides the `pager.<cmd>`
287configuration options (see the "Configuration Mechanism" section
288below).
Junio C Hamanof870ef82006-07-29 09:10:13289
Junio C Hamanocae86272007-08-21 02:20:49290--no-pager::
291Do not pipe git output into a pager.
292
Junio C Hamanof870ef82006-07-29 09:10:13293--git-dir=<path>::
294Set the path to the repository. This can also be controlled by
Junio C Hamano7d575a52008-04-30 08:45:27295setting the GIT_DIR environment variable. It can be an absolute
296path or relative path to current working directory.
Junio C Hamanof870ef82006-07-29 09:10:13297
Junio C Hamanod526ba92007-07-02 00:17:42298--work-tree=<path>::
Junio C Hamano80d58462011-01-24 22:52:52299Set the path to the working tree. It can be an absolute path
300or a path relative to the current working directory.
Junio C Hamanod526ba92007-07-02 00:17:42301This can also be controlled by setting the GIT_WORK_TREE
302environment variable and the core.worktree configuration
Junio C Hamano80d58462011-01-24 22:52:52303variable (see core.worktree in linkgit:git-config[1] for a
304more detailed discussion).
Junio C Hamanod526ba92007-07-02 00:17:42305
Junio C Hamanof870ef82006-07-29 09:10:13306--bare::
Junio C Hamanoc435b1c2007-08-28 06:25:35307Treat the repository as a bare repository. If GIT_DIR
308environment is not set, it is set to the current working
309directory.
310
Junio C Hamano3d23a0a2009-10-19 08:04:30311--no-replace-objects::
312Do not use replacement refs to replace git objects. See
313linkgit:git-replace[1] for more information.
314
Junio C Hamano1a4e8412005-12-27 08:17:23315
Junio C Hamanoe27fb932006-04-03 05:34:10316FURTHER DOCUMENTATION
317---------------------
Junio C Hamano1a4e8412005-12-27 08:17:23318
Junio C Hamanoe27fb932006-04-03 05:34:10319See the references above to get started using git. The following is
320probably more detail than necessary for a first-time user.
Junio C Hamano1a4e8412005-12-27 08:17:23321
Junio C Hamano597ffcf2007-09-17 17:33:15322The link:user-manual.html#git-concepts[git concepts chapter of the
Junio C Hamanofce7c7e2008-07-02 03:06:38323user-manual] and linkgit:gitcore-tutorial[7] both provide
Junio C Hamano597ffcf2007-09-17 17:33:15324introductions to the underlying git architecture.
Junio C Hamano1a4e8412005-12-27 08:17:23325
Junio C Hamano804b5212009-06-07 16:05:03326See linkgit:gitworkflows[7] for an overview of recommended workflows.
327
Junio C Hamanoe27fb932006-04-03 05:34:10328See also the link:howto-index.html[howto] documents for some useful
329examples.
Junio C Hamano1a4e8412005-12-27 08:17:23330
Junio C Hamanofce7c7e2008-07-02 03:06:38331The internals are documented in the
332link:technical/api-index.html[GIT API documentation].
Junio C Hamano3dac5042007-12-15 08:40:54333
Junio C Hamanoe27fb932006-04-03 05:34:10334GIT COMMANDS
335------------
Junio C Hamano1a4e8412005-12-27 08:17:23336
Junio C Hamanoe27fb932006-04-03 05:34:10337We divide git into high level ("porcelain") commands and low level
338("plumbing") commands.
Junio C Hamano1a4e8412005-12-27 08:17:23339
Junio C Hamanob19b4f02006-10-29 20:47:22340High-level commands (porcelain)
341-------------------------------
342
343We separate the porcelain commands into the main commands and some
344ancillary user utilities.
345
346Main porcelain commands
347~~~~~~~~~~~~~~~~~~~~~~~
348
Junio C Hamano7c73c662007-01-19 00:37:50349include::cmds-mainporcelain.txt[]
Junio C Hamanob19b4f02006-10-29 20:47:22350
351Ancillary Commands
352~~~~~~~~~~~~~~~~~~
353Manipulators:
354
Junio C Hamano7c73c662007-01-19 00:37:50355include::cmds-ancillarymanipulators.txt[]
Junio C Hamanob19b4f02006-10-29 20:47:22356
357Interrogators:
358
Junio C Hamano7c73c662007-01-19 00:37:50359include::cmds-ancillaryinterrogators.txt[]
Junio C Hamanob19b4f02006-10-29 20:47:22360
Junio C Hamano4ad294b2007-01-20 02:22:50361
362Interacting with Others
363~~~~~~~~~~~~~~~~~~~~~~~
364
365These commands are to interact with foreign SCM and with other
366people via patch over e-mail.
367
368include::cmds-foreignscminterface.txt[]
369
370
Junio C Hamanoe27fb932006-04-03 05:34:10371Low-level commands (plumbing)
372-----------------------------
Junio C Hamano1a4e8412005-12-27 08:17:23373
Junio C Hamanoe27fb932006-04-03 05:34:10374Although git includes its
375own porcelain layer, its low-level commands are sufficient to support
376development of alternative porcelains. Developers of such porcelains
Junio C Hamano35738e82008-01-07 07:55:46377might start by reading about linkgit:git-update-index[1] and
378linkgit:git-read-tree[1].
Junio C Hamano1a4e8412005-12-27 08:17:23379
Junio C Hamano4ad294b2007-01-20 02:22:50380The interface (input, output, set of options and the semantics)
381to these low-level commands are meant to be a lot more stable
382than Porcelain level commands, because these commands are
383primarily for scripted use. The interface to Porcelain commands
384on the other hand are subject to change in order to improve the
385end user experience.
386
387The following description divides
388the low-level commands into commands that manipulate objects (in
Junio C Hamanoe27fb932006-04-03 05:34:10389the repository, index, and working tree), commands that interrogate and
390compare objects, and commands that move objects and references between
391repositories.
Junio C Hamano1a4e8412005-12-27 08:17:23392
Junio C Hamano4ad294b2007-01-20 02:22:50393
Junio C Hamano1a4e8412005-12-27 08:17:23394Manipulation commands
395~~~~~~~~~~~~~~~~~~~~~
Junio C Hamano1a4e8412005-12-27 08:17:23396
Junio C Hamano7c73c662007-01-19 00:37:50397include::cmds-plumbingmanipulators.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23398
399
400Interrogation commands
401~~~~~~~~~~~~~~~~~~~~~~
402
Junio C Hamano7c73c662007-01-19 00:37:50403include::cmds-plumbinginterrogators.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23404
405In general, the interrogate commands do not touch the files in
406the working tree.
407
408
409Synching repositories
410~~~~~~~~~~~~~~~~~~~~~
411
Junio C Hamano7c73c662007-01-19 00:37:50412include::cmds-synchingrepositories.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23413
Junio C Hamano27a128b2009-08-13 01:23:00414The following are helper commands used by the above; end users
Junio C Hamano4ad294b2007-01-20 02:22:50415typically do not use them directly.
416
417include::cmds-synchelpers.txt[]
418
419
420Internal helper commands
421~~~~~~~~~~~~~~~~~~~~~~~~
422
423These are internal helper commands used by other commands; end
424users typically do not use them directly.
425
426include::cmds-purehelpers.txt[]
427
Junio C Hamano1a4e8412005-12-27 08:17:23428
Junio C Hamano1a4e8412005-12-27 08:17:23429Configuration Mechanism
430-----------------------
431
432Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
433is used to hold per-repository configuration options. It is a
Junio C Hamano51c2ab02006-07-09 20:38:54434simple text file modeled after `.ini` format familiar to some
Junio C Hamano1a4e8412005-12-27 08:17:23435people. Here is an example:
436
437------------
438#
439# A '#' or ';' character indicates a comment.
440#
441
442; core variables
443[core]
444; Don't trust file modes
445filemode = false
446
447; user identity
448[user]
449name = "Junio C Hamano"
450email = "junkio@twinsun.com"
451
452------------
453
454Various commands read from the configuration file and adjust
Junio C Hamano4aa0bcc2010-03-03 05:13:12455their operation accordingly. See linkgit:git-config[1] for a
456list.
Junio C Hamano1a4e8412005-12-27 08:17:23457
458
459Identifier Terminology
460----------------------
461<object>::
462Indicates the object name for any type of object.
463
464<blob>::
465Indicates a blob object name.
466
467<tree>::
468Indicates a tree object name.
469
470<commit>::
471Indicates a commit object name.
472
473<tree-ish>::
474Indicates a tree, commit or tag object name. A
475command that takes a <tree-ish> argument ultimately wants to
476operate on a <tree> object but automatically dereferences
477<commit> and <tag> objects that point at a <tree>.
478
Junio C Hamano60f8aa82007-03-06 09:58:26479<commit-ish>::
480Indicates a commit or tag object name. A
481command that takes a <commit-ish> argument ultimately wants to
482operate on a <commit> object but automatically dereferences
483<tag> objects that point at a <commit>.
484
Junio C Hamano1a4e8412005-12-27 08:17:23485<type>::
486Indicates that an object type is required.
487Currently one of: `blob`, `tree`, `commit`, or `tag`.
488
489<file>::
490Indicates a filename - almost always relative to the
491root of the tree structure `GIT_INDEX_FILE` describes.
492
493Symbolic Identifiers
494--------------------
495Any git command accepting any <object> can also use the following
496symbolic notation:
497
498HEAD::
499indicates the head of the current branch (i.e. the
500contents of `$GIT_DIR/HEAD`).
501
502<tag>::
503a valid tag 'name'
504(i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).
505
506<head>::
507a valid head 'name'
508(i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
509
Junio C Hamanoff4b4312006-10-25 22:55:31510For a more complete list of ways to spell object names, see
Junio C Hamanoc27b7332010-10-14 04:37:28511"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
Junio C Hamanoff4b4312006-10-25 22:55:31512
Junio C Hamano1a4e8412005-12-27 08:17:23513
514File/Directory Structure
515------------------------
516
Junio C Hamanofce7c7e2008-07-02 03:06:38517Please see the linkgit:gitrepository-layout[5] document.
Junio C Hamano1a4e8412005-12-27 08:17:23518
Junio C Hamanofce7c7e2008-07-02 03:06:38519Read linkgit:githooks[5] for more details about each hook.
Junio C Hamano818f7d62006-03-26 01:49:30520
Junio C Hamano1a4e8412005-12-27 08:17:23521Higher level SCMs may provide and manage additional information in the
522`$GIT_DIR`.
523
524
525Terminology
526-----------
Junio C Hamanofce7c7e2008-07-02 03:06:38527Please see linkgit:gitglossary[7].
Junio C Hamano1a4e8412005-12-27 08:17:23528
529
530Environment Variables
531---------------------
532Various git commands use the following environment variables:
533
534The git Repository
535~~~~~~~~~~~~~~~~~~
536These environment variables apply to 'all' core git commands. Nb: it
537is worth noting that they may be used/overridden by SCMS sitting above
538git so take care if using Cogito etc.
539
540'GIT_INDEX_FILE'::
541This environment allows the specification of an alternate
542index file. If not specified, the default of `$GIT_DIR/index`
543is used.
544
545'GIT_OBJECT_DIRECTORY'::
546If the object storage directory is specified via this
547environment variable then the sha1 directories are created
548underneath - otherwise the default `$GIT_DIR/objects`
549directory is used.
550
551'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
552Due to the immutable nature of git objects, old objects can be
553archived into shared, read-only directories. This variable
Junio C Hamano05bf9c52008-07-03 09:21:58554specifies a ":" separated (on Windows ";" separated) list
555of git object directories which can be used to search for git
556objects. New objects will not be written to these directories.
Junio C Hamano1a4e8412005-12-27 08:17:23557
558'GIT_DIR'::
559If the 'GIT_DIR' environment variable is set then it
560specifies a path to use instead of the default `.git`
561for the base of the repository.
562
Junio C Hamanod526ba92007-07-02 00:17:42563'GIT_WORK_TREE'::
564Set the path to the working tree. The value will not be
565used in combination with repositories found automatically in
566a .git directory (i.e. $GIT_DIR is not set).
567This can also be controlled by the '--work-tree' command line
568option and the core.worktree configuration variable.
569
Junio C Hamano15048272008-07-07 22:10:48570'GIT_CEILING_DIRECTORIES'::
571This should be a colon-separated list of absolute paths.
572If set, it is a list of directories that git should not chdir
573up into while looking for a repository directory.
574It will not exclude the current working directory or
575a GIT_DIR set on the command line or in the environment.
576(Useful for excluding slow-loading network directories.)
577
Junio C Hamanocc7636a2010-05-21 14:57:53578'GIT_DISCOVERY_ACROSS_FILESYSTEM'::
579When run in a directory that does not have ".git" repository
580directory, git tries to find such a directory in the parent
581directories to find the top of the working tree, but by default it
582does not cross filesystem boundaries. This environment variable
583can be set to true to tell git not to stop at filesystem
584boundaries. Like 'GIT_CEILING_DIRECTORIES', this will not affect
585an explicit repository directory set via 'GIT_DIR' or on the
586command line.
587
Junio C Hamano1a4e8412005-12-27 08:17:23588git Commits
589~~~~~~~~~~~
590'GIT_AUTHOR_NAME'::
591'GIT_AUTHOR_EMAIL'::
592'GIT_AUTHOR_DATE'::
593'GIT_COMMITTER_NAME'::
594'GIT_COMMITTER_EMAIL'::
Junio C Hamano469d60e2007-04-29 18:30:34595'GIT_COMMITTER_DATE'::
596'EMAIL'::
Junio C Hamano35738e82008-01-07 07:55:46597see linkgit:git-commit-tree[1]
Junio C Hamano1a4e8412005-12-27 08:17:23598
599git Diffs
600~~~~~~~~~
601'GIT_DIFF_OPTS'::
Junio C Hamano1c437122006-11-28 02:22:25602Only valid setting is "--unified=??" or "-u??" to set the
603number of context lines shown when a unified diff is created.
604This takes precedence over any "-U" or "--unified" option
605value passed on the git diff command line.
606
Junio C Hamano1a4e8412005-12-27 08:17:23607'GIT_EXTERNAL_DIFF'::
Junio C Hamano1c437122006-11-28 02:22:25608When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
609program named by it is called, instead of the diff invocation
610described above. For a path that is added, removed, or modified,
611 'GIT_EXTERNAL_DIFF' is called with 7 parameters:
612
613path old-file old-hex old-mode new-file new-hex new-mode
614+
615where:
616
617<old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
618 contents of <old|new>,
619<old|new>-hex:: are the 40-hexdigit SHA1 hashes,
620<old|new>-mode:: are the octal representation of the file modes.
621
622+
623The file parameters can point at the user's working file
624(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
625when a new file is added), or a temporary file (e.g. `old-file` in the
626index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the
627temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
628+
629For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
630parameter, <path>.
Junio C Hamano1a4e8412005-12-27 08:17:23631
Junio C Hamano7ccb9fd2006-07-15 01:38:40632other
633~~~~~
Junio C Hamano1e6e0062007-07-13 05:33:25634'GIT_MERGE_VERBOSITY'::
635A number controlling the amount of output shown by
636the recursive merge strategy. Overrides merge.verbosity.
Junio C Hamano35738e82008-01-07 07:55:46637See linkgit:git-merge[1]
Junio C Hamano1e6e0062007-07-13 05:33:25638
Junio C Hamano85e45fa2006-08-13 07:47:41639'GIT_PAGER'::
Junio C Hamanof6002a92007-07-20 10:28:22640This environment variable overrides `$PAGER`. If it is set
641to an empty string or to the value "cat", git will not launch
Junio C Hamano0551f6a2008-08-25 00:33:33642a pager. See also the `core.pager` option in
643linkgit:git-config[1].
Junio C Hamano85e45fa2006-08-13 07:47:41644
Junio C Hamano4cd1c0e2007-08-06 04:39:14645'GIT_SSH'::
Junio C Hamano1aa40d22010-01-21 17:46:43646If this environment variable is set then 'git fetch'
647and 'git push' will use this command instead
Junio C Hamanoba4b9282008-07-06 05:20:31648of 'ssh' when they need to connect to a remote system.
Junio C Hamanofce7c7e2008-07-02 03:06:38649The '$GIT_SSH' command will be given exactly two arguments:
Junio C Hamano4cd1c0e2007-08-06 04:39:14650the 'username@host' (or just 'host') from the URL and the
651shell command to execute on that remote system.
652+
653To pass options to the program that you want to list in GIT_SSH
654you will need to wrap the program and options into a shell script,
655then set GIT_SSH to refer to the shell script.
656+
657Usually it is easier to configure any desired options through your
658personal `.ssh/config` file. Please consult your ssh documentation
659for further details.
660
Junio C Hamano3fd7b262010-09-08 22:44:20661'GIT_ASKPASS'::
662If this environment variable is set, then git commands which need to
663acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
664will call this program with a suitable prompt as command line argument
665and read the password from its STDOUT. See also the 'core.askpass'
666option in linkgit:git-config[1].
667
Junio C Hamano401939f2007-07-01 06:34:30668'GIT_FLUSH'::
669If this environment variable is set to "1", then commands such
Junio C Hamano1aa40d22010-01-21 17:46:43670as 'git blame' (in incremental mode), 'git rev-list', 'git log',
671and 'git whatchanged' will force a flush of the output stream
Junio C Hamano401939f2007-07-01 06:34:30672after each commit-oriented record have been flushed. If this
673variable is set to "0", the output of these commands will be done
674using completely buffered I/O. If this environment variable is
675not set, git will choose buffered or record-oriented flushing
676based on whether stdout appears to be redirected to a file or not.
677
Junio C Hamano7ccb9fd2006-07-15 01:38:40678'GIT_TRACE'::
Junio C Hamanoef4b48b2006-09-04 10:08:34679If this variable is set to "1", "2" or "true" (comparison
680is case insensitive), git will print `trace:` messages on
Junio C Hamano7ccb9fd2006-07-15 01:38:40681stderr telling about alias expansion, built-in command
682execution and external command execution.
Junio C Hamanoef4b48b2006-09-04 10:08:34683If this variable is set to an integer value greater than 1
684and lower than 10 (strictly) then git will interpret this
685value as an open file descriptor and will try to write the
686trace messages into this file descriptor.
687Alternatively, if this variable is set to an absolute path
688(starting with a '/' character), git will interpret this
689as a file path and will try to write the trace messages
690into it.
Junio C Hamano7ccb9fd2006-07-15 01:38:40691
Junio C Hamano1a4e8412005-12-27 08:17:23692Discussion[[Discussion]]
693------------------------
Junio C Hamano597ffcf2007-09-17 17:33:15694
695More detail on the following is available from the
696link:user-manual.html#git-concepts[git concepts chapter of the
Junio C Hamanofce7c7e2008-07-02 03:06:38697user-manual] and linkgit:gitcore-tutorial[7].
Junio C Hamano597ffcf2007-09-17 17:33:15698
699A git project normally consists of a working directory with a ".git"
700subdirectory at the top level. The .git directory contains, among other
701things, a compressed object database representing the complete history
702of the project, an "index" file which links that history to the current
703contents of the working tree, and named pointers into that history such
704as tags and branch heads.
705
706The object database contains objects of three main types: blobs, which
707hold file data; trees, which point to blobs and other trees to build up
Junio C Hamanofe986052007-12-19 07:33:38708directory hierarchies; and commits, which each reference a single tree
Junio C Hamano597ffcf2007-09-17 17:33:15709and some number of parent commits.
710
711The commit, equivalent to what other systems call a "changeset" or
712"version", represents a step in the project's history, and each parent
713represents an immediately preceding step. Commits with more than one
714parent represent merges of independent lines of development.
715
716All objects are named by the SHA1 hash of their contents, normally
717written as a string of 40 hex digits. Such names are globally unique.
718The entire history leading up to a commit can be vouched for by signing
719just that commit. A fourth object type, the tag, is provided for this
720purpose.
721
722When first created, objects are stored in individual files, but for
723efficiency may later be compressed together into "pack files".
724
725Named pointers called refs mark interesting points in history. A ref
726may contain the SHA1 name of an object or the name of another ref. Refs
727with names beginning `ref/head/` contain the SHA1 name of the most
Junio C Hamanofe986052007-12-19 07:33:38728recent commit (or "head") of a branch under development. SHA1 names of
Junio C Hamano597ffcf2007-09-17 17:33:15729tags of interest are stored under `ref/tags/`. A special ref named
730`HEAD` contains the name of the currently checked-out branch.
731
732The index file is initialized with a list of all paths and, for each
733path, a blob object and a set of attributes. The blob object represents
734the contents of the file as of the head of the current branch. The
735attributes (last modified time, size, etc.) are taken from the
736corresponding file in the working tree. Subsequent changes to the
737working tree can be found by comparing these attributes. The index may
738be updated with new content, and new commits may be created from the
739content stored in the index.
740
741The index is also capable of storing multiple entries (called "stages")
742for a given pathname. These stages are used to hold the various
743unmerged version of a file when a merge is in progress.
Junio C Hamano1a4e8412005-12-27 08:17:23744
745Authors
746-------
747* git's founding father is Linus Torvalds <torvalds@osdl.org>.
Junio C Hamanodbb64592007-09-01 11:17:39748* The current git nurse is Junio C Hamano <gitster@pobox.com>.
Junio C Hamanoe0facb92007-12-05 10:59:48749* The git potty was written by Andreas Ericsson <ae@op5.se>.
Junio C Hamano1a4e8412005-12-27 08:17:23750* General upbringing is handled by the git-list <git@vger.kernel.org>.
751
752Documentation
753--------------
754The documentation for git suite was started by David Greaves
755<david@dgreaves.com>, and later enhanced greatly by the
756contributors on the git-list <git@vger.kernel.org>.
757
Junio C Hamanoa9788762010-08-03 15:15:54758Reporting Bugs
759--------------
760
761Report bugs to the Git mailing list <git@vger.kernel.org> where the
762development and maintenance is primarily done. You do not have to be
763subscribed to the list to send a message there.
764
Junio C Hamano9e1793f2008-06-02 07:31:16765SEE ALSO
766--------
767linkgit:gittutorial[7], linkgit:gittutorial-2[7],
Junio C Hamanoaf1987f2008-08-03 07:58:19768link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7],
Junio C Hamano9e1793f2008-06-02 07:31:16769linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
Junio C Hamano804b5212009-06-07 16:05:03770linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
771linkgit:gitworkflows[7]
Junio C Hamano9e1793f2008-06-02 07:31:16772
Junio C Hamano1a4e8412005-12-27 08:17:23773GIT
774---
Junio C Hamanof7c042d2008-06-06 22:50:53775Part of the linkgit:git[1] suite